/******************************************************************************
 * Copyright (C), 2014, BeeIoT Tech. Co., Ltd. 
 * FileName:        stat.h
 * Author:          lvxin 
 * Version :        1.0
 * Date:            2017-01-12 04:18:43
 * Description:
 * Function List:   1. -------
 * History:
 * <author>     <time>                <version >  <desc> 
 * lvxin        2017-01-12 04:18:43   1.0         build this moudle 
 *****************************************************************************/
#ifndef  STAT_H
#define  STAT_H

/******************************************************************************
 *  *INCLUDES
 *  */
#include <stdint.h>
#include <stdio.h>

/******************************************************************************
 *  *MICROS
 *  */
#define     DATA_MAX_LEN    10 //最大正文数据长度

/******************************************************************************
 *  *TYPEDEFS
 *  */
typedef void (*callback_t)(uint8_t *data, int len, void *arg); //回调函数

typedef enum        //状态机的状态定义
{
    REC_START = 0,  //读取起始字节
    REC_LENGTH,     //读取数据长度
    REC_DATA,       //读取数据
}stat_em_t;         

typedef struct _stat
{
    stat_em_t current_stat;         //当前状态
    int remain;                     //剩余字节数

    struct {
        int len;                    //正文数据长度
        uint8_t data[DATA_MAX_LEN]; //正文数据
    }package;                       //数据包

    void *arg;                      //传给回调函数的外部参数
    callback_t callback;            //回调函数
}stat_t;

/******************************************************************************
 *  *FUNCTION DECLARES
 *  */
int proto_init(stat_t *st, callback_t callback, void *arg);
int proto_proc(stat_t *st, int ch);

#endif  /*STAT_H*/
